package com.zhengjiang.service;

import com.zhengjiang.model.Student;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;

/**
 *
 * @FeignClient 指定 Feign 要调用的微服务，直接指定服务提供者在注册中心的 application name 即可。
 * Feign 也提供了负载均衡功能。
 *
 * 通过 @FeignClient 的 fallback 属性设置映射 容错处理类
 * 启动注册中心和 Feign，此时如果没有服务提供者 Provider 被注册或者Provider 出现故障无法访问,
 * 直接访问Feign接口则走FeignError的处理逻辑
 *
 */
@FeignClient(value = "provider",fallback = FeignError.class)
public interface FeignProviderClient {
    @GetMapping("/student/index")
    String index();

    @GetMapping("/student/findAll")
    Collection<Student> findAll();

    @GetMapping("/student/findById/{id}")
    Student findById(@PathVariable("id") long id);

    @PostMapping("/student/save")
    void save(@RequestBody Student student);

    @PutMapping("/student/update")
    void update(@RequestBody Student student);

    @DeleteMapping("/student/deleteById/{id}")
    void deleteById(@PathVariable("id") long id);
}
